package com.ymh.spring.learn.beans.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.ymh.spring.learn.beans.service.CompactDiscService;
import com.ymh.spring.learn.beans.service.impl.CDPlayer;
import com.ymh.spring.learn.beans.service.impl.SgtPeppersServiceImpl;

/**
 * 
 * 项目名称：spring-beans 功能描述：声明一个配置类
 * 
 * @author aivin
 * @version 1.0.0 ©版权所有 杨明华
 */
@Configuration
// 使用本注解表明该类是一个配置类
public class CDPlayer2Config {

	@Bean(name = "sgtPeppers")
	public CompactDiscService sgtPeppersServiceImpl() {
		return new SgtPeppersServiceImpl();
	}

	@Bean
	public CompactDiscService randomBeatlesCD() {
		int choice = (int) Math.floor(Math.random() * 4);
		if (choice == 0) {
			return new SgtPeppersServiceImpl();
		} else if (choice == 1) {
			return new SgtPeppersServiceImpl();
		} else if (choice == 2) {
			return new SgtPeppersServiceImpl();
		} else {
			return new SgtPeppersServiceImpl();
		}
	}

	/**
	 * 
	 * 功能描述：通過JavaConfig实现注入 创建时间：2018年3月19日 下午10:46:39
	 * 
	 * @author aivin
	 *
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayer() {
		return new CDPlayer(sgtPeppersServiceImpl());
	}

	@Bean
	public CDPlayer anotherCDPlayer() {
		return new CDPlayer(sgtPeppersServiceImpl());
	}

	/**
	 * 
	 * 功能描述：通过构造方法注入 创建时间：2018年3月19日 下午10:51:49
	 *
	 * @author aivin
	 *
	 * @param cd
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayer(CompactDiscService cd) {
		return new CDPlayer(cd);
	}

	/**
	 * 
	 * 功能描述：通过Setter方法注入 创建时间：2018年3月19日 下午10:52:04
	 *
	 * @author aivin
	 *
	 * @param cd
	 * @return
	 */
	@Bean
	public CDPlayer cdPlayerSetter(CompactDiscService cd) {
		CDPlayer cdplayer = new CDPlayer(cd);
		cdplayer.setCdPlayer(cd);
		return cdplayer;
	}

}
